package com.example.cbl;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

/**
 * MessageAdapter：将 MessageItem 绑定到 item_message.xml
 */
public class MessageAdapter extends BaseAdapter {

    private Context context;
    private List<MessageItem> dataList;
    private LayoutInflater inflater;

    public MessageAdapter(Context context, List<MessageItem> dataList) {
        this.context = context;
        this.dataList = dataList;
        this.inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return dataList != null ? dataList.size() : 0;
    }

    @Override
    public Object getItem(int position) {
        return dataList != null ? dataList.get(position) : null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    // ViewHolder 模式，用于缓存 item_message.xml 中的各控件
    private static class ViewHolder {
        ImageView ivIcon;        // 左侧图标
        View redDot;             // 左上角小红点
        TextView tvTitle;        // 中间第一行：标题
        TextView tvSubtitle;     // 中间第二行：副标题
        TextView tvTime;         // 右侧时间文本
        ImageView ivRightIcon;   // 右侧静音图标（当时间为空时显示）
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;

        // 如果 convertView 为空，说明是第一次创建这一行
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.item_message, parent, false);
            holder = new ViewHolder();

            // 在 item_message.xml 中找到对应的控件
            holder.ivIcon      = convertView.findViewById(R.id.iv_item_icon);
            holder.redDot      = convertView.findViewById(R.id.view_red_dot);
            holder.tvTitle     = convertView.findViewById(R.id.tv_item_title);
            holder.tvSubtitle  = convertView.findViewById(R.id.tv_item_subtitle);
            holder.tvTime      = convertView.findViewById(R.id.tv_item_time);
            holder.ivRightIcon = convertView.findViewById(R.id.iv_item_right_icon);

            convertView.setTag(holder);
        } else {
            // 否则直接重用已有的 ViewHolder
            holder = (ViewHolder) convertView.getTag();
        }

        // 获取当前行对应的数据项
        MessageItem item = dataList.get(position);

        // 1. 左侧主图标：根据 MessageItem 中存储的资源 ID 进行设置
        holder.ivIcon.setImageResource(item.getIconResId());

        // 2. 左上角红点：如果 isShowRedDot() 返回 true，则可见，否则隐藏
        holder.redDot.setVisibility(item.isShowRedDot() ? View.VISIBLE : View.GONE);

        // 3. 中间文字：标题和副标题
        holder.tvTitle.setText(item.getTitle());
        holder.tvSubtitle.setText(item.getSubtitle());

        // 4. 右侧：如果 time 不为空，则显示时间，否则显示静音图标
        String time = item.getTime();
        if (time != null && !time.isEmpty()) {
            // 当有时间字符串时，显示时间 TextView，并隐藏静音图标
            holder.tvTime.setVisibility(View.VISIBLE);
            holder.tvTime.setText(time);
            holder.ivRightIcon.setVisibility(View.GONE);
        } else {
            // 当 time 为空时，隐藏时间 TextView，显示静音图标
            holder.tvTime.setVisibility(View.GONE);
            holder.ivRightIcon.setVisibility(View.VISIBLE);
        }

        return convertView;
    }
}
